Лабораторная работа №1

Работа с git

Шубнякова Дарья НКНбд-01-22

Российский университет дружбы народов

Вводная часть

Цели и задачи

Ознакомиться с работой git.

Реализовать на практике команды и понять, как они работают.

Основная часть

Выполнение лабораторной работы

Установка имени и электронной почты. Параметры установки окончаний строк. Установка отображения unicode. Создаем страницу «Hello,World».

Чтобы создать git репозиторий из этого каталога, выполняем команду git init. Добавим файл в репозиторий. Используем команду git status, чтобы проверить текущее состояние репозитория.

Добавим кое-какие HTML-теги к нашему приветствию. Меняем содержимое файла hello.html.

Сделаем коммит и проверим состояние.

git commit Откроется редактор. В первой строке вводим комментарий: «Added h1 tag». Сохраняем файл и выходим из редактора (для этого в редакторе по-умолчанию (Vim) вам нужно нажать клавишу ESC, ввести :wq и нажать Enter). Теперь еще раз проверим состояние.

### Изменяем страницу «Hello, World», чтобы она содержала стандартные теги и

.

Производим коммит проиндексированного изменения (значение по умолчанию), а затем еще раз проверяем состояние.

Сделали коммит второго изменения.

### Затем проверяем содержимое файла hello.html. Создаем тег первой версии. Это версия c тегами и , но еще пока без

. Давайте сделаем ее версией v1-beta.

Внесем изменение в файл hello.html в виде нежелательного комментария.

Используем команду git checkout для переключения версии файла hello.html в репозитории.

Проиндексируем это изменение.

К счастью, вывод состояния показывает нам именно то, что мы должны сделать для отмены индексации изменения.

git reset HEAD hello.html.

Изменяем файл hello.html на следующий. Выполняем:

git add hello.html git commit -m “Oops, we didn’t want this commit”

Чтобы отменить коммит, нам необходимо сделать коммит, который удаляет изме- нения, сохраненные нежелательным коммитом. Проверка лога показывает нежелательные и отмененные коммиты в наш репозиторий.

Но прежде чем удалить коммиты, давайте отметим последний коммит тегом, чтобы потом можно было его найти.

git tag oops

Создаем директорию lib.

Добавим в страницу комментарий автора (вставим свою фамилию)

Выполним:

git add hello.html git commit -m “Add an author comment”. Выполним: ls -C .git/objects Мы должны увидеть набор каталогов, имена которых состоят из 2 символов. Имена каталогов являются первыми двумя буквами хэша sha1 объекта, хранящегося в git.

Выполним:

git log –max-count=1 Эта команда должна показать последний коммит в репозиторий. SHA1 хэш в вашей системе, вероятно, отличается от моего, но вы увидите что-то наподобие этого

Давайте назовем нашу новую ветку «style». Выполним:

git checkout -b style

Добавим файл стилей style.css

Теперь в вашем проекте есть две ветки. Выполним:

git log –all

git checkout master

cat lib/hello.html Сейчас мы находимся на ветке master. Это заметно по тому, что файл hello.html не использует стили style.css

Выполним:

git checkout style cat lib/hello.html Содержимое lib/hello.html подтверждает, что мы вернулись на ветку style.

Выполним:

git log –graph –all Добавление опции –graph в git log вызывает построение дерева коммитов с помощью простых ASCII символов.

Слияние переносит изменения из двух веток в одну. Давайте вернемся к ветке style и сольем master с style.

Выполним: git checkout style git merge master git log –graph –all

Вернемся в ветку master и внесем изменения

git checkout master

Используем команду rebase вместо команды merge. Мы вернулись в точку до пер- вого слияния и хотим перенести изменения из ветки master в нашу ветку style. На этот раз для переноса изменений из ветки master мы будем использовать команду git rebase вместо слияния

Выполним:

git checkout master git merge style Поскольку последний коммит ветки master прямо предшествует последнему коммиту ветки style, git может выполнить ускоренное слияние-перемотку. При быстрой перемотке вперед git просто передвигает указатель вперед, таким обра- зом указывая на тот же коммит, что и ветка style. При быстрой перемотке конфликтов быть не может

Создадим клон репозитория. Выполним:

git clone hello cloned_hello ls

Мы увидели список всех файлов на верхнем уровне оригинального репозитория README.md, index.html и lib

git remote

Мы видим, что клонированный репозиторий знает об имени по умолчанию удаленного репозитория. Давайте посмотрим, можем ли мы получить более подробную информацию об имени по умолчанию: Выполним: git remote show origin Удаленные репозитории обычно размещаются на отдельной машине, возможно, централизованном сервере.

Для того, чтобы увидеть все ветки, попробуем следующую команду:

git branch -a

Внесем следующие изменения в файл README.md: Файл README.md

This is the Hello World example from the git tutorial.

Выполним:

git branch –track style origin/style git branch -a git log –max-count=2

Создаем чистый репозиторий

cd .. git clone –bare hello hello.git ls hello.git

Файл README.md:

This is the Hello World example from the git tutorial. (Changed in the original and pushed to shared) Выполним: git checkout master git add README git commit -m “Added shared comment to readme”

Теперь отправим изменения в общий репозиторий. Выполним:

git push shared master Выполним: git remote add shared ../hello.git git branch –track shared master git pull shared master cat README.md

Результаты

Мы настроили git и ознакомились со всеми полезными командами для дальнейшей работы.